//package com.xcw.test;
//
//import com.xcw.FunctionIntterPg.MyFunctionInterface;
//import com.xcw.FunctionIntterPg.MyFunctionInterfaceImpl;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Stack;
//
///**
// * @Author bhx
// * @Date 2022/8/9 1:05
// * @Description TODO
// */
//public class Demo {
//    public static void show(MyFunctionInterface mFi){
//        mFi.method();
//    }
//    public static void main(String[] args) {
////        show(new MyFunctionInterfaceImpl());
////        System.out.println(generate(4));
////        int[] ints = {7,1,5,3,6,4,100};
////        System.out.println(maxProfit(ints) );
////        System.out.println(new Demo().isPalindrome("race a car"));
////        new Demo().getFirstStr("sdszxfczxfgvxcfvxc");
////        int[] ints = {4, 1, 2, 1, 2};
//        System.out.println(new Demo().reverse(1534236469));
////        int[] ints = {7,1,5,3,6,4,100};
////        System.out.println(maxProfit(ints) );
//        System.out.println(new Demo().myAtoi("42"));
//    }
//
//    public static int maxProfit(int[] prices) {
//        int minPrice = prices[0];
//        int getprofit = 0;
//        for (int i = 0; i < prices.length; i++) {
//            if (prices[i] < minPrice){
//                minPrice = prices[i];
//            } else if ((prices[i] - minPrice) > getprofit){
//                getprofit = prices[i] - minPrice;
//            }
//        }
//       return getprofit;
//    }
//    public static List<List<Integer>> generate(int numRows) {
//        List<List<Integer>> reslist = new ArrayList<List<Integer>>();
//        for(int i = 0; i<numRows; i++){
//            List<Integer> list = new ArrayList<Integer>();
//                if (!(reslist.size() > 0)){
//                    list.add(1);
//                }else {
//                    List<Integer> dealList = reslist.get(i - 1);
//                    int temp = 0;
//                    for (int j = 0; j < dealList.size(); j++) {
//                        list.add(temp + dealList.get(j));
//                        temp =  dealList.get(j);
//                    }
//                    list.add(temp + 0);
//                }
//
//            reslist.add(list);
//        }
//        return reslist;
//    }
//
//    /**
//     * 验证回文串
//     * @param s
//     * @return
//     */
//    public boolean isPalindrome(String s) {
////        s = s.replaceAll("\\s*","").replaceAll("[(]","").replaceAll("[)]","").replaceAll("[^(a-zA-Z)]","").toLowerCase();
//        char[] chars = s.toLowerCase().toCharArray();
//        Stack stack = new Stack();
//        StringBuffer stringBuffer;
//        for (int i = 0; i < chars.length; i++) {
//            stack.push(chars[i]);
//        StringBuffer deal  = new StringBuffer();
//        for (char c:chars) {
//            if (Character.isLetterOrDigit(c)){
//                deal.append(c);
//            }
//        }
//        System.out.println( deal.toString());
//        char[] chars1 = deal.toString().toCharArray();
//        int length = chars1.length;
//        int left = 0;
//        int right = length - 1;
//        Boolean flag = true;
//        System.out.println(chars[7]);
//        while(right >= 0){
//
//            System.out.println("---- " +chars1[left] + " ------- " + chars1[right] );
//            System.out.println("---- " +left + " ------- " + right);
//            if(!Character.toString(chars1[left]).equals(Character.toString(chars1[right]))){
//                flag = false;
//            }
//            left++;
//            right--;
//        }
//        return flag;
////        System.out.println(s);
////        char[] chars = s.toLowerCase().toCharArray();
////        Stack stack = new Stack();
////        StringBuffer ss1  = new StringBuffer();
////        StringBuffer ss2  = new StringBuffer();
////        for (int i = 0; i < chars.length; i++) {
////            char aChar = chars[i];
////            stack.push(chars[i]);
////            ss1.append(chars[i]);
////        }
////        while (!stack.empty()) {
////            ss2.append(stack.pop());
////        }
////        System.out.println(ss1.toString());
////        System.out.println(ss2.toString());
////        if (ss1.toString().equals(ss2.toString())){
////            return true;
////        }else {
////            return false;
////        }
//    }
//    public String getFirstStr(String s){
//        char[] chars = s.toCharArray();
//        int i = Character.codePointBefore(chars, 3, 0);
//        System.out.println(i);
//        return "";
//    }
//
//    public int singleNumber(int[] nums) {
//        Map<Integer,Integer> map = new HashMap<>();
//        for (int i:nums) {
//            if (map.containsKey(i)){
//                int value = map.get(i);
//                map.put(i, value++);
//            } else {
//                map.put(i, 1);
//            }
//        }
//        for (Map.Entry<Integer, Integer> i:map.entrySet()) {
//            if (i.getValue() == 1){
//                return i.getKey();
//            }
//        }
//        return 0;
//    }
//
//        public String convert(String s, int numRows) {
//                Map<Integer,StringBuffer> map = new LinkedHashMap<>();
//            if (numRows < 2){
//                return s;
//            }
//
//            char[] chars = s.toCharArray();
//            for (int i = 1; i < numRows+1; i++) {
//                map.put(i,new StringBuffer());
//            }
//            int index = 1;
//            boolean shunxu = true;
//            for (int i = 0; i < chars.length; i++) {
//                if ((numRows > index)&&shunxu){
//                    map.put(index,map.get(index).append(Character.toString(chars[i])));
//                    index++;
//                    continue;
//                }
//                if (numRows == index){
//                    map.put(index,map.get(index) .append(Character.toString(chars[i])));
//                    index--;
//                    shunxu = false;
//                    continue;
//                }
//                if ((index > 1)&&!shunxu){
//                    map.put(index,map.get(index) .append(Character.toString(chars[i])));
//                    index--;
//                    shunxu = false;
//                    continue;
//                }
//                if (index == 1){
//                    map.put(index,map.get(index).append(Character.toString(chars[i])));
//                    index++;
//                    shunxu = true;
//                    continue;
//                }
//            }
//            StringBuffer stringBuffer = new StringBuffer();
//            for (int i = 1; i < numRows+1; i++) {
//                stringBuffer.append(map.get(i));
//            }
//            return stringBuffer.toString();
//        }
//    return false;
//    }
//
//        public int myAtoi(String s) {
//            char[] chars = s.toCharArray();
//            boolean flag = true;
//            StringBuffer sb = new StringBuffer();
//            StringBuffer sb2 = null;
//            for (int i = 0; i < chars.length; i++) {
//                if (Character.isLetter(chars[i])){
//                    sb.append("0");
//                    continue;
//                }
//                if (Character.isDigit(chars[i])){
//                    sb.append(Character.toString(chars[i]));
//                }else if ("-".equals(Character.toString(chars[i])) && flag){
//                    sb2 = new StringBuffer();
//                    sb2.append("-");
//                }
//            }
//            if (null != sb2){
//                sb2.append(sb);
//            }
//            String s1 = sb.toString();
//            int integer = 0;
//               while (integer == 0){
//                   try {
//                       integer = Integer.valueOf(s1);
//                   }catch (Exception e){
//                       s1 = s1.substring(0,s1.length() - 1);
//                   }
//               }
//               return integer;
//        }
//
//
//    public int reverse(int x) {
//        long n = 11;
//        while(x != 0) {
//            n = n*10 + x%10;
//            x = x/10;
//        }
//        return (int)n==n? (int)n:0;
//    }
//}
